Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


Console/build.py 9b39b6ce5962007fafefc22034082f354eff3374 (9b39b6ce) Text, 13.24 KB

Tff7b72import T7ee787markdown
Tff7b72import T7ee787os
Tff7b72import T7ee787sys
Tff7b72import T7ee787shutil

Te6edf3packages Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffrnsTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffrns-1.1.9-py3-none-any.whlTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffnomadnetTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffnomadnet-0.9.11-py3-none-any.whlTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflxmfTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fflxmf-0.9.6-py3-none-any.whlTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffrnshTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffrnsh-0.1.9-py3-none-any.whlTa5d6ff"Tb4b4b4,
Tb4b4b4}

Te6edf3DEFAULT_TITLE Tff7b72= Ta5d6ff"Ta5d6ffRNode Bootstrap ConsoleTa5d6ff"
Te6edf3SOURCES_PATHTff7b72=Ta5d6ff"Ta5d6ff./sourceTa5d6ff"
Te6edf3BUILD_PATHTff7b72=Ta5d6ff"Ta5d6ff./buildTa5d6ff"
Te6edf3PACKAGES_PATH Tff7b72= Ta5d6ff"Ta5d6ff../../dist_archiveTa5d6ff"
Te6edf3RNS_SOURCE_PATH Tff7b72= Ta5d6ff"Ta5d6ff../../ReticulumTa5d6ff"
Te6edf3INPUT_ENCODINGTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"
Te6edf3OUTPUT_ENCODINGTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"

Te6edf3LXMF_ADDRESS Tff7b72= Ta5d6ff"Ta5d6ff8dd57a738226809646089335a6b03695Ta5d6ff"

Te6edf3document_start Tff7b72= Ta5d6ff"""
Ta5d6ff<!DOCTYPE html>
Ta5d6ff<html>
Ta5d6ff<head>
Ta5d6ff<link rel=Ta5d6ff"Ta5d6ffstylesheetTa5d6ff"Ta5d6ff href=Ta5d6ff"Tffd700{ASSET_PATH}Ta5d6ffcss/water.css?v=4Ta5d6ff"Ta5d6ff>
Ta5d6ff<link rel=Ta5d6ff"Ta5d6ffshortcut iconTa5d6ff"Ta5d6ff type=Ta5d6ff"Ta5d6ffimage/x-iconTa5d6ff"Ta5d6ff href=Ta5d6ff"Tffd700{ASSET_PATH}Ta5d6ffgfx/icon.pngTa5d6ff"Ta5d6ff>
Ta5d6ff<meta charset=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Ta5d6ff/>
Ta5d6ff<title>Tffd700{PAGE_TITLE}Ta5d6ff</title>
Ta5d6ff<meta name=Ta5d6ff"Ta5d6ffviewportTa5d6ff"Ta5d6ff content=Ta5d6ff"Ta5d6ffwidth=device-width, initial-scale=1.0Ta5d6ff"Ta5d6ff>
Ta5d6ff</head>
Ta5d6ff<body>
Ta5d6ff<div id=Ta5d6ff"Ta5d6ffload_overlayTa5d6ff"Ta5d6ff style=Ta5d6ff"Ta5d6ffbackground-color:#2a2a2f; position:absolute; top:0px; left:0px; width:100Ta5d6ff%Ta5d6ff; height:100Ta5d6ff%Ta5d6ff; z-index:2000;Ta5d6ff"Ta5d6ff></div>
Ta5d6ff<span class=Ta5d6ff"Ta5d6fflogoTa5d6ff"Ta5d6ff>RNode Console</span>
Tffd700{MENU}Ta5d6ff<hr>Ta5d6ff"""

Te6edf3document_end Tff7b72= Ta5d6ff"""Ta5d6ff</body></html>Ta5d6ff"""

Te6edf3menu_md Tff7b72= Ta5d6ff"""Ta5d6ff<center markdown=Tffea00\"Ta5d6ff1Tffea00\"Ta5d6ff><span class=Ta5d6ff"Ta5d6ffmenuTa5d6ff"Ta5d6ff>[Start](Tffd700{CONTENT_PATH}Ta5d6ffindex.html) | [Replicate](Tffd700{CONTENT_PATH}Ta5d6ffreplicate.html) | [Software](Tffd700{CONTENT_PATH}Ta5d6ffsoftware.html) | [Learn](Tffd700{CONTENT_PATH}Ta5d6fflearn.html) | [Help](help.html) | [Contribute](Tffd700{CONTENT_PATH}Ta5d6ffcontribute.html)</span></center>Ta5d6ff"""

Te6edf3manual_redirect Tff7b72= Ta5d6ff"""
Ta5d6ff<!DOCTYPE html>
Ta5d6ff<html>
Ta5d6ff<head>
Ta5d6ff<meta http-equiv=Ta5d6ff"Ta5d6ffrefreshTa5d6ff"Ta5d6ff content=Ta5d6ff"Ta5d6ff0; url=/m/index.htmlTa5d6ff"Ta5d6ff>
Ta5d6ff</head>
Ta5d6ff</html>
Ta5d6ff"""
Te6edf3help_redirect Tff7b72= Ta5d6ff"""
Ta5d6ff<!DOCTYPE html>
Ta5d6ff<html>
Ta5d6ff<head>
Ta5d6ff<meta http-equiv=Ta5d6ff"Ta5d6ffrefreshTa5d6ff"Ta5d6ff content=Ta5d6ff"Ta5d6ff0; url=/help.htmlTa5d6ff"Ta5d6ff>
Ta5d6ff</head>
Ta5d6ff</html>
Ta5d6ff"""

Te6edf3url_maps Tff7b72= Tb4b4b4[
T8b949e# { "path": "", "target": "/.md"},
Tb4b4b4]

Tff7b72def Td2a8ffscan_pagesTb4b4b4(Te6edf3base_pathTb4b4b4)Tb4b4b4:
Te6edf3files Tff7b72= Tb4b4b4[Te6edf3file Tff7b72for Te6edf3file Tff7b72in Te6edf3osTff7b72.Td2a8fflistdirTb4b4b4(Te6edf3base_pathTb4b4b4) Tff7b72if Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffisfileTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3base_pathTb4b4b4, Te6edf3fileTb4b4b4)Tb4b4b4) Tff7b72and Te6edf3fileTb4b4b4[Tb4b4b4:T79c0ff1Tb4b4b4] Tff7b72!= Ta5d6ff"Ta5d6ff.Ta5d6ff"Tb4b4b4]
Te6edf3directories Tff7b72= Tb4b4b4[Te6edf3file Tff7b72for Te6edf3file Tff7b72in Te6edf3osTff7b72.Td2a8fflistdirTb4b4b4(Te6edf3base_pathTb4b4b4) Tff7b72if Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffisdirTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3base_pathTb4b4b4, Te6edf3fileTb4b4b4)Tb4b4b4) Tff7b72and Te6edf3fileTb4b4b4[Tb4b4b4:T79c0ff1Tb4b4b4] Tff7b72!= Ta5d6ff"Ta5d6ff.Ta5d6ff"Tb4b4b4]

Te6edf3page_sources Tff7b72= Tb4b4b4[Tb4b4b4]

Tff7b72for Te6edf3file Tff7b72in Te6edf3filesTb4b4b4:
Tff7b72if Te6edf3fileTff7b72.Td2a8ffendswithTb4b4b4(Ta5d6ff"Ta5d6ff.mdTa5d6ff"Tb4b4b4)Tb4b4b4:
Te6edf3page_sourcesTff7b72.Td2a8ffappendTb4b4b4(Te6edf3base_pathTff7b72+Ta5d6ff"Ta5d6ff/Ta5d6ff"Tff7b72+Te6edf3fileTb4b4b4)

Tff7b72for Te6edf3directory Tff7b72in Te6edf3directoriesTb4b4b4:
Te6edf3page_sourcesTff7b72.Td2a8ffextendTb4b4b4(Te6edf3scan_pagesTb4b4b4(Te6edf3base_pathTff7b72+Ta5d6ff"Ta5d6ff/Ta5d6ff"Tff7b72+Te6edf3directoryTb4b4b4)Tb4b4b4)

Tff7b72return Te6edf3page_sources

Tff7b72def Td2a8ffget_propTb4b4b4(Te6edf3mdTb4b4b4, Te6edf3propTb4b4b4)Tb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3pt Tff7b72= Ta5d6ff"Ta5d6ff[Ta5d6ff"Tff7b72+Te6edf3propTff7b72+Ta5d6ff"Ta5d6ff]: <> (Ta5d6ff"
Te6edf3pp Tff7b72= Te6edf3mdTff7b72.Td2a8fffindTb4b4b4(Te6edf3ptTb4b4b4)
Tff7b72if Te6edf3pp Tff7b72!= Tff7b72-T79c0ff1Tb4b4b4:
Te6edf3ps Tff7b72= Te6edf3ppTff7b72+Tffa657lenTb4b4b4(Te6edf3ptTb4b4b4)
Te6edf3pe Tff7b72= Te6edf3mdTff7b72.Td2a8fffindTb4b4b4(Ta5d6ff"Ta5d6ff)Ta5d6ff"Tb4b4b4, Te6edf3psTb4b4b4)
Tff7b72return Te6edf3mdTb4b4b4[Te6edf3psTb4b4b4:Te6edf3peTb4b4b4]
Tff7b72elseTb4b4b4:
Tff7b72return Tff7b72None

Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffError while extracting topic property: Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4)
Tff7b72return Tff7b72None

Tff7b72def Td2a8fflist_topicTb4b4b4(Te6edf3topicTb4b4b4)Tb4b4b4:
Te6edf3base_path Tff7b72= Te6edf3SOURCES_PATHTff7b72+Ta5d6ff"Ta5d6ff/Ta5d6ff"Tff7b72+Te6edf3topic
Te6edf3files Tff7b72= Tb4b4b4[Te6edf3file Tff7b72for Te6edf3file Tff7b72in Te6edf3osTff7b72.Td2a8fflistdirTb4b4b4(Te6edf3base_pathTb4b4b4) Tff7b72if Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffisfileTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3base_pathTb4b4b4, Te6edf3fileTb4b4b4)Tb4b4b4) Tff7b72and Te6edf3fileTb4b4b4[Tb4b4b4:T79c0ff1Tb4b4b4] Tff7b72!= Ta5d6ff"Ta5d6ff.Ta5d6ff" Tff7b72and Te6edf3file Tff7b72!= Ta5d6ff"Ta5d6ffindex.mdTa5d6ff"Tb4b4b4]
Te6edf3topic_entries Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72for Te6edf3file Tff7b72in Te6edf3filesTb4b4b4:
Tff7b72if Te6edf3fileTff7b72.Td2a8ffendswithTb4b4b4(Ta5d6ff"Ta5d6ff.mdTa5d6ff"Tb4b4b4)Tb4b4b4:
Te6edf3fp Tff7b72= Te6edf3base_pathTff7b72+Ta5d6ff"Ta5d6ff/Ta5d6ff"Tff7b72+Te6edf3file
Te6edf3f Tff7b72= Tffa657openTb4b4b4(Te6edf3fpTb4b4b4, Ta5d6ff"Ta5d6ffrbTa5d6ff"Tb4b4b4)
Te6edf3link_path Tff7b72= Te6edf3fpTff7b72.Td2a8ffreplaceTb4b4b4(Te6edf3SOURCES_PATHTb4b4b4, Ta5d6ff"Ta5d6ff.Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6ff.mdTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff.htmlTa5d6ff"Tb4b4b4)

Te6edf3md Tff7b72= Te6edf3fTff7b72.Td2a8ffreadTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffdecodeTb4b4b4(Te6edf3INPUT_ENCODINGTb4b4b4)
Te6edf3topic_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{
Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4: Te6edf3get_propTb4b4b4(Te6edf3mdTb4b4b4, Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffimageTa5d6ff"Tb4b4b4: Te6edf3get_propTb4b4b4(Te6edf3mdTb4b4b4, Ta5d6ff"Ta5d6ffimageTa5d6ff"Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffdateTa5d6ff"Tb4b4b4: Te6edf3get_propTb4b4b4(Te6edf3mdTb4b4b4, Ta5d6ff"Ta5d6ffdateTa5d6ff"Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffexcerptTa5d6ff"Tb4b4b4: Te6edf3get_propTb4b4b4(Te6edf3mdTb4b4b4, Ta5d6ff"Ta5d6ffexcerptTa5d6ff"Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffmdTa5d6ff"Tb4b4b4: Te6edf3mdTb4b4b4,
Ta5d6ff"Ta5d6fffileTa5d6ff"Tb4b4b4: Te6edf3link_path
Tb4b4b4}Tb4b4b4)

Te6edf3topic_entriesTff7b72.Td2a8ffsortTb4b4b4(Te6edf3keyTff7b72=Tff7b72lambda Te6edf3eTb4b4b4: Te6edf3eTb4b4b4[Ta5d6ff"Ta5d6ffdateTa5d6ff"Tb4b4b4]Tb4b4b4, Te6edf3reverseTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72return Te6edf3topic_entries

Tff7b72def Td2a8ffrender_topicTb4b4b4(Te6edf3topic_entriesTb4b4b4)Tb4b4b4:
Te6edf3md Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72for Te6edf3topic Tff7b72in Te6edf3topic_entriesTb4b4b4:
Te6edf3md Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff<a class=Tffea00\"Ta5d6fftopic_linkTffea00\"Ta5d6ff href=Tffea00\"Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3topicTb4b4b4[Ta5d6ff"Ta5d6fffileTa5d6ff"Tb4b4b4]Tb4b4b4)Tff7b72+Ta5d6ff"Tffea00\"Ta5d6ff>Ta5d6ff"
Te6edf3md Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff<span class=Tffea00\"Ta5d6fftopicTffea00\"Ta5d6ff>Ta5d6ff"
Te6edf3md Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff<img class=Tffea00\"Ta5d6fftopic_imageTffea00\"Ta5d6ff src=Tffea00\"Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3topicTb4b4b4[Ta5d6ff"Ta5d6ffimageTa5d6ff"Tb4b4b4]Tb4b4b4)Tff7b72+Ta5d6ff"Tffea00\"Ta5d6ff/>Ta5d6ff"
Te6edf3md Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff<span class=Tffea00\"Ta5d6fftopic_titleTffea00\"Ta5d6ff>Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3topicTb4b4b4[Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4]Tb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff</span>Ta5d6ff"
T8b949e#md += "<span class=\"topic_date\">"+str(topic["date"])+"</span>"
Te6edf3md Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff<span class=Tffea00\"Ta5d6fftopic_excerptTffea00\"Ta5d6ff>Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3topicTb4b4b4[Ta5d6ff"Ta5d6ffexcerptTa5d6ff"Tb4b4b4]Tb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff</span>Ta5d6ff"
Te6edf3md Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff</span>Ta5d6ff"
Te6edf3md Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff</a>Ta5d6ff"


Tff7b72return Te6edf3md

Tff7b72def Td2a8ffgenerate_htmlTb4b4b4(Te6edf3fTb4b4b4, Te6edf3root_pathTb4b4b4)Tb4b4b4:
Te6edf3md Tff7b72= Te6edf3fTff7b72.Td2a8ffreadTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffdecodeTb4b4b4(Te6edf3INPUT_ENCODINGTb4b4b4)

Te6edf3page_title Tff7b72= Te6edf3get_propTb4b4b4(Te6edf3mdTb4b4b4, Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4)
Tff7b72if Te6edf3page_title Tff7b72== Tff7b72NoneTb4b4b4:
Te6edf3page_title Tff7b72= Te6edf3DEFAULT_TITLE
Tff7b72elseTb4b4b4:
Te6edf3page_title Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff | Ta5d6ff"Tff7b72+Te6edf3DEFAULT_TITLE
Te6edf3tt Tff7b72= Ta5d6ff"Ta5d6ff{Ta5d6ffTOPIC:Ta5d6ff"
Te6edf3tp Tff7b72= Te6edf3mdTff7b72.Td2a8fffindTb4b4b4(Te6edf3ttTb4b4b4)
Tff7b72if Te6edf3tp Tff7b72!= Tff7b72-T79c0ff1Tb4b4b4:
Te6edf3ts Tff7b72= Te6edf3tpTff7b72+Tffa657lenTb4b4b4(Te6edf3ttTb4b4b4)
Te6edf3te Tff7b72= Te6edf3mdTff7b72.Td2a8fffindTb4b4b4(Ta5d6ff"Ta5d6ff}Ta5d6ff"Tb4b4b4, Te6edf3tsTb4b4b4)
Te6edf3topic Tff7b72= Te6edf3mdTb4b4b4[Te6edf3tsTb4b4b4:Te6edf3teTb4b4b4]
Te6edf3rt Tff7b72= Te6edf3ttTff7b72+Te6edf3topicTff7b72+Ta5d6ff"Ta5d6ff}Ta5d6ff"
Te6edf3tl Tff7b72= Te6edf3render_topicTb4b4b4(Te6edf3list_topicTb4b4b4(Te6edf3topicTb4b4b4)Tb4b4b4)
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffFound topic: Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3topicTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff, rt Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3rtTb4b4b4)Tb4b4b4)
Te6edf3md Tff7b72= Te6edf3mdTff7b72.Td2a8ffreplaceTb4b4b4(Te6edf3rtTb4b4b4, Te6edf3tlTb4b4b4)

Te6edf3menu_html Tff7b72= Te6edf3markdownTff7b72.Td2a8ffmarkdownTb4b4b4(Te6edf3menu_mdTff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Tffd700{CONTENT_PATH}Ta5d6ff"Tb4b4b4, Te6edf3root_pathTb4b4b4)Tb4b4b4, Te6edf3extensionsTff7b72=Tb4b4b4[Ta5d6ff"Ta5d6ffmd_in_htmlTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffmarkdown.extensions.fenced_codeTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffsane_listsTa5d6ff"Tb4b4b4]Tb4b4b4)Tff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6ff<p></p>Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)
Te6edf3page_html Tff7b72= Te6edf3markdownTff7b72.Td2a8ffmarkdownTb4b4b4(Te6edf3mdTb4b4b4, Te6edf3extensionsTff7b72=Tb4b4b4[Ta5d6ff"Ta5d6ffmd_in_htmlTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffmarkdown.extensions.fenced_codeTa5d6ff"Tb4b4b4]Tb4b4b4)Tff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Tffd700{ASSET_PATH}Ta5d6ff"Tb4b4b4, Te6edf3root_pathTb4b4b4)
Te6edf3page_html Tff7b72= Te6edf3page_htmlTff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Tffd700{LXMF_ADDRESS}Ta5d6ff"Tb4b4b4, Te6edf3LXMF_ADDRESSTb4b4b4)
Tff7b72for Te6edf3pkg_name Tff7b72in Te6edf3packagesTb4b4b4:
Te6edf3page_html Tff7b72= Te6edf3page_htmlTff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6ff{Ta5d6ffPKG_Ta5d6ff"Tff7b72+Te6edf3pkg_nameTff7b72+Ta5d6ff"Ta5d6ff}Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffpkg/Ta5d6ff"Tff7b72+Te6edf3pkg_nameTff7b72+Ta5d6ff"Ta5d6ff.zipTa5d6ff"Tb4b4b4)
Te6edf3page_html Tff7b72= Te6edf3page_htmlTff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6ff{Ta5d6ffPKG_BASE_Ta5d6ff"Tff7b72+Te6edf3pkg_nameTff7b72+Ta5d6ff"Ta5d6ff}Ta5d6ff"Tb4b4b4, Te6edf3pkg_nameTff7b72+Ta5d6ff"Ta5d6ff.zipTa5d6ff"Tb4b4b4)
Te6edf3page_html Tff7b72= Te6edf3page_htmlTff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6ff{Ta5d6ffPKG_NAME_Ta5d6ff"Tff7b72+Te6edf3pkg_nameTff7b72+Ta5d6ff"Ta5d6ff}Ta5d6ff"Tb4b4b4, Te6edf3packagesTb4b4b4[Te6edf3pkg_nameTb4b4b4]Tb4b4b4)

Te6edf3page_date Tff7b72= Te6edf3get_propTb4b4b4(Te6edf3mdTb4b4b4, Ta5d6ff"Ta5d6ffdateTa5d6ff"Tb4b4b4)
Tff7b72if Te6edf3page_date Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3page_html Tff7b72= Te6edf3page_htmlTff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Tffd700{DATE}Ta5d6ff"Tb4b4b4, Te6edf3page_dateTb4b4b4)

Tff7b72return Te6edf3document_startTff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Tffd700{ASSET_PATH}Ta5d6ff"Tb4b4b4, Te6edf3root_pathTb4b4b4)Tff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Tffd700{MENU}Ta5d6ff"Tb4b4b4, Te6edf3menu_htmlTb4b4b4)Tff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Tffd700{PAGE_TITLE}Ta5d6ff"Tb4b4b4, Te6edf3page_titleTb4b4b4) Tff7b72+ Te6edf3page_html Tff7b72+ Te6edf3document_end

Te6edf3source_files Tff7b72= Te6edf3scan_pagesTb4b4b4(Te6edf3SOURCES_PATHTb4b4b4)

Te6edf3mf Tff7b72= Tffa657openTb4b4b4(Te6edf3BUILD_PATHTff7b72+Ta5d6ff"Ta5d6ff/m.htmlTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffwTa5d6ff"Tb4b4b4)
Te6edf3mfTff7b72.Td2a8ffwriteTb4b4b4(Te6edf3manual_redirectTb4b4b4)
Te6edf3mfTff7b72.Td2a8ffcloseTb4b4b4(Tb4b4b4)
Te6edf3mf Tff7b72= Tffa657openTb4b4b4(Te6edf3BUILD_PATHTff7b72+Ta5d6ff"Ta5d6ff/h.htmlTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffwTa5d6ff"Tb4b4b4)
Te6edf3mfTff7b72.Td2a8ffwriteTb4b4b4(Te6edf3help_redirectTb4b4b4)
Te6edf3mfTff7b72.Td2a8ffcloseTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffoptimise_manualTb4b4b4(Te6edf3pathTb4b4b4)Tb4b4b4:
Te6edf3pm Tff7b72= T79c0ff180
Te6edf3scale_imgs Tff7b72= Tb4b4b4[
Tb4b4b4(Ta5d6ff"Ta5d6ff_images/board_rnodev2.pngTa5d6ff"Tb4b4b4, Te6edf3pmTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff_images/board_rnode.pngTa5d6ff"Tb4b4b4, Te6edf3pmTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff_images/board_heltec32v20.pngTa5d6ff"Tb4b4b4, Te6edf3pmTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff_images/board_heltec32v30.pngTa5d6ff"Tb4b4b4, Te6edf3pmTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff_images/board_heltec32v4.pngTa5d6ff"Tb4b4b4, Te6edf3pmTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff_images/board_t3v21.pngTa5d6ff"Tb4b4b4, Te6edf3pmTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff_images/board_t3v20.pngTa5d6ff"Tb4b4b4, Te6edf3pmTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff_images/board_t3v10.pngTa5d6ff"Tb4b4b4, Te6edf3pmTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff_images/board_t3s3.pngTa5d6ff"Tb4b4b4, Te6edf3pmTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff_images/board_tbeam.pngTa5d6ff"Tb4b4b4, Te6edf3pmTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff_images/board_tdeck.pngTa5d6ff"Tb4b4b4, Te6edf3pmTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff_images/board_rak4631.pngTa5d6ff"Tb4b4b4, Te6edf3pmTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff_images/board_tbeam_supreme.pngTa5d6ff"Tb4b4b4, Te6edf3pmTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff_images/sideband_devices.webpTa5d6ff"Tb4b4b4, Te6edf3pmTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff_images/nomadnet_3.pngTa5d6ff"Tb4b4b4, Te6edf3pmTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff_images/meshchat_1.webpTa5d6ff"Tb4b4b4, Te6edf3pmTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff_images/radio_is5ac.pngTa5d6ff"Tb4b4b4, Te6edf3pmTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff_images/radio_rblhg5.pngTa5d6ff"Tb4b4b4, Te6edf3pmTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff_images/rbrowser.webpTa5d6ff"Tb4b4b4, Te6edf3pmTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff_images/rnphone.webpTa5d6ff"Tb4b4b4, Te6edf3pmTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff_images/retibbs.webpTa5d6ff"Tb4b4b4, Te6edf3pmTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff_images/meshchatx.webpTa5d6ff"Tb4b4b4, Te6edf3pmTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff_images/lxst_phone.webpTa5d6ff"Tb4b4b4, Te6edf3pmTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff_images/columba.webpTa5d6ff"Tb4b4b4, Te6edf3pmTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff_static/rns_logo_512.pngTa5d6ff"Tb4b4b4, T79c0ff256Tb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff../images/bg_h_1.webpTa5d6ff"Tb4b4b4, Te6edf3pmTb4b4b4)Tb4b4b4,

Tb4b4b4(Ta5d6ff"Ta5d6ff../../images/3_conv.webpTa5d6ff"Tb4b4b4, Te6edf3pmTff7b72/T79c0ff2Tb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff../../images/an1.webpTa5d6ff"Tb4b4b4, Te6edf3pmTff7b72/T79c0ff2Tb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff../../images/bg1ds1.webpTa5d6ff"Tb4b4b4, Te6edf3pmTff7b72/T79c0ff2Tb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff../../images/bg1ds2.webpTa5d6ff"Tb4b4b4, Te6edf3pmTff7b72/T79c0ff2Tb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff../../images/bg_h_1.webpTa5d6ff"Tb4b4b4, Te6edf3pmTff7b72/T79c0ff2Tb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff../../images/bg_h_2.webpTa5d6ff"Tb4b4b4, Te6edf3pmTff7b72/T79c0ff2Tb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff../../images/g1p.webpTa5d6ff"Tb4b4b4, Te6edf3pmTff7b72/T79c0ff2Tb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff../../images/g2p.webpTa5d6ff"Tb4b4b4, Te6edf3pmTff7b72/T79c0ff2Tb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff../../images/g3p.webpTa5d6ff"Tb4b4b4, Te6edf3pmTff7b72/T79c0ff2Tb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff../../images/g4p.webpTa5d6ff"Tb4b4b4, Te6edf3pmTff7b72/T79c0ff2Tb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff../../images/lora_rnodes.webpTa5d6ff"Tb4b4b4, Te6edf3pmTff7b72/T79c0ff2Tb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff../../images/nn_an.webpTa5d6ff"Tb4b4b4, Te6edf3pmTff7b72/T79c0ff2Tb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff../../images/nn_conv.webpTa5d6ff"Tb4b4b4, Te6edf3pmTff7b72/T79c0ff2Tb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ff../../images/nn_init.webpTa5d6ff"Tb4b4b4, Te6edf3pmTff7b72/T79c0ff2Tb4b4b4)Tb4b4b4,
Tb4b4b4]

Tff7b72import T7ee787subprocess
Tff7b72import T7ee787shlex
Tff7b72for Te6edf3iTb4b4b4,Te6edf3s Tff7b72in Te6edf3scale_imgsTb4b4b4:
Te6edf3fp Tff7b72= Te6edf3pathTff7b72+Ta5d6ff"Ta5d6ff/Ta5d6ff"Tff7b72+Te6edf3i
Te6edf3input_file Tff7b72= Te6edf3fp
Te6edf3output_file Tff7b72= Te6edf3input_file
Te6edf3resize Tff7b72= Ta5d6ff"Ta5d6ffconvert Ta5d6ff"Tff7b72+Te6edf3input_fileTff7b72+Ta5d6ff"Ta5d6ff -quality 25 -resize Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3sTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff Ta5d6ff"Tff7b72+Te6edf3output_file
Tffa657printTb4b4b4(Te6edf3resizeTb4b4b4)
Te6edf3subprocessTff7b72.Td2a8ffcallTb4b4b4(Te6edf3shlexTff7b72.Td2a8ffsplitTb4b4b4(Te6edf3resizeTb4b4b4)Tb4b4b4, Te6edf3stdoutTff7b72=Te6edf3subprocessTff7b72.Td2a8ffDEVNULLTb4b4b4, Te6edf3stderrTff7b72=Te6edf3subprocessTff7b72.Td2a8ffDEVNULLTb4b4b4)
T8b949e# if output_file != input_file and os.path.isfile(input_file): os.unlink(input_file)

Te6edf3remove_files Tff7b72= Tb4b4b4[
Ta5d6ff"Ta5d6ffobjects.invTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffReticulum Manual.pdfTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffReticulum Manual.epubTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff_static/styles/furo.css.mapTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff_static/scripts/furo.js.mapTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff_static/jquery-3.6.0.jsTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff_static/jquery.jsTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffstatic/underscore-1.13.1.jsTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff_static/_sphinx_javascript_frameworks_compat.jsTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff_static/scripts/furo.js.LICENSE.txtTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff_static/styles/furo-extensions.css.mapTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff_images/board_rak4631.pngTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff_images/board_rnodev2.pngTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff_images/board_t114.pngTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff_images/board_t3s3.pngTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff_images/board_t3v10.pngTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff_images/board_t3v20.pngTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff_images/board_t3v21.pngTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff_images/board_tbeam.pngTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff_images/board_tdeck.pngTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff_images/board_techo.pngTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff_images/board_tbeam_supreme.pngTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff_images/board_opencomxl.pngTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff_images/board_heltec32v20.pngTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff_images/board_heltec32v30.pngTa5d6ff"Tb4b4b4,
T8b949e# "_static/pygments.css",
T8b949e# "_static/language_data.js",
T8b949e# "_static/searchtools.js",
T8b949e# "searchindex.js",
Tb4b4b4]
Tff7b72for Te6edf3file Tff7b72in Te6edf3remove_filesTb4b4b4:
Te6edf3fp Tff7b72= Te6edf3pathTff7b72+Ta5d6ff"Ta5d6ff/Ta5d6ff"Tff7b72+Te6edf3file
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffRemoving file: Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3fpTb4b4b4)Tb4b4b4)
Tff7b72tryTb4b4b4:
Te6edf3osTff7b72.Td2a8ffunlinkTb4b4b4(Te6edf3fpTb4b4b4)
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffAn error occurred while attempting to unlink Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3fpTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff: Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4)

Te6edf3remove_dirs Tff7b72= Tb4b4b4[
Ta5d6ff"Ta5d6ff_sourcesTa5d6ff"Tb4b4b4,
Tb4b4b4]
Tff7b72for Te6edf3d Tff7b72in Te6edf3remove_dirsTb4b4b4:
Te6edf3fp Tff7b72= Te6edf3pathTff7b72+Ta5d6ff"Ta5d6ff/Ta5d6ff"Tff7b72+Te6edf3d
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffRemoving dir: Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3fpTb4b4b4)Tb4b4b4)
Te6edf3shutilTff7b72.Td2a8ffrmtreeTb4b4b4(Te6edf3fpTb4b4b4)

Te6edf3shutilTff7b72.Td2a8ffmoveTb4b4b4(Te6edf3pathTb4b4b4, Te6edf3BUILD_PATHTff7b72+Ta5d6ff"Ta5d6ff/mTa5d6ff"Tb4b4b4)

Tff7b72def Td2a8fffetch_reticulum_siteTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3r_site_path Tff7b72= Te6edf3BUILD_PATHTff7b72+Ta5d6ff"Ta5d6ff/rTa5d6ff"
Tff7b72if Tff7b72not Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffisdirTb4b4b4(Te6edf3r_site_pathTb4b4b4)Tb4b4b4:
Te6edf3shutilTff7b72.Td2a8ffcopytreeTb4b4b4(Te6edf3PACKAGES_PATHTff7b72+Ta5d6ff"Ta5d6ff/reticulum.networkTa5d6ff"Tb4b4b4, Te6edf3r_site_pathTb4b4b4)
Tff7b72if Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffisdirTb4b4b4(Te6edf3r_site_pathTff7b72+Ta5d6ff"Ta5d6ff/manualTa5d6ff"Tb4b4b4)Tb4b4b4:
Te6edf3optimise_manualTb4b4b4(Te6edf3r_site_pathTff7b72+Ta5d6ff"Ta5d6ff/manualTa5d6ff"Tb4b4b4)
Te6edf3remove_files Tff7b72= Tb4b4b4[
Ta5d6ff"Ta5d6ffgfx/reticulum_logo_512.pngTa5d6ff"Tb4b4b4,
Tb4b4b4]
Tff7b72for Te6edf3file Tff7b72in Te6edf3remove_filesTb4b4b4:
Te6edf3fp Tff7b72= Te6edf3r_site_pathTff7b72+Ta5d6ff"Ta5d6ff/Ta5d6ff"Tff7b72+Te6edf3file
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffRemoving file: Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3fpTb4b4b4)Tb4b4b4)
Te6edf3osTff7b72.Td2a8ffunlinkTb4b4b4(Te6edf3fpTb4b4b4)
Te6edf3replace_pathsTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffreplace_pathsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3repls Tff7b72= Tb4b4b4[
Tb4b4b4(Ta5d6ff"Ta5d6ffgfx/reticulum_logo_512.pngTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff/m/_static/rns_logo_512.pngTa5d6ff"Tb4b4b4)
Tb4b4b4]
Tff7b72for Te6edf3rootTb4b4b4, Te6edf3dirsTb4b4b4, Te6edf3files Tff7b72in Te6edf3osTff7b72.Td2a8ffwalkTb4b4b4(Te6edf3BUILD_PATHTb4b4b4)Tb4b4b4:
Tff7b72for Te6edf3file Tff7b72in Te6edf3filesTb4b4b4:
Te6edf3fpath Tff7b72= Te6edf3rootTff7b72+Ta5d6ff"Ta5d6ff/Ta5d6ff"Tff7b72+Te6edf3file
Tff7b72if Te6edf3fpathTff7b72.Td2a8ffendswithTb4b4b4(Ta5d6ff"Ta5d6ff.htmlTa5d6ff"Tb4b4b4)Tb4b4b4:
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffPerforming replacements in Ta5d6ff"Tff7b72+Te6edf3fpathTff7b72+Ta5d6ff"Ta5d6ff"Tb4b4b4)
Te6edf3f Tff7b72= Tffa657openTb4b4b4(Te6edf3fpathTb4b4b4, Ta5d6ff"Ta5d6ffrbTa5d6ff"Tb4b4b4)
Te6edf3html Tff7b72= Te6edf3fTff7b72.Td2a8ffreadTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)
Te6edf3fTff7b72.Td2a8ffcloseTb4b4b4(Tb4b4b4)
Tff7b72for Te6edf3sTb4b4b4,Te6edf3r Tff7b72in Te6edf3replsTb4b4b4:
Te6edf3html Tff7b72= Te6edf3htmlTff7b72.Td2a8ffreplaceTb4b4b4(Te6edf3sTb4b4b4,Te6edf3rTb4b4b4)
Te6edf3f Tff7b72= Tffa657openTb4b4b4(Te6edf3fpathTb4b4b4, Ta5d6ff"Ta5d6ffwbTa5d6ff"Tb4b4b4)
Te6edf3fTff7b72.Td2a8ffwriteTb4b4b4(Te6edf3htmlTff7b72.Td2a8ffencodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3fTff7b72.Td2a8ffcloseTb4b4b4(Tb4b4b4)

T8b949e# if not os.path.isdir(BUILD_PATH+"/d"):
T8b949e# os.makedirs(BUILD_PATH+"/d")
T8b949e# shutil.move(fpath, BUILD_PATH+"/d/")


Tff7b72def Td2a8ffremap_namesTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72for Te6edf3rootTb4b4b4, Te6edf3dirsTb4b4b4, Te6edf3files Tff7b72in Te6edf3osTff7b72.Td2a8ffwalkTb4b4b4(Te6edf3BUILD_PATHTb4b4b4)Tb4b4b4:
Tff7b72for Te6edf3file Tff7b72in Te6edf3filesTb4b4b4:
Te6edf3fpath Tff7b72= Te6edf3rootTff7b72+Ta5d6ff"Ta5d6ff/Ta5d6ff"Tff7b72+Te6edf3file
Te6edf3spath Tff7b72= Te6edf3fpathTff7b72.Td2a8ffreplaceTb4b4b4(Te6edf3BUILD_PATHTb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)
Tff7b72if Tffa657lenTb4b4b4(Te6edf3spathTb4b4b4) Tff7b72> T79c0ff31Tb4b4b4:
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffPath Ta5d6ff"Tff7b72+Te6edf3spathTff7b72+Ta5d6ff"Ta5d6ff is too long, remapping...Ta5d6ff"Tb4b4b4)
Tff7b72if Tff7b72not Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffisdirTb4b4b4(Te6edf3BUILD_PATHTff7b72+Ta5d6ff"Ta5d6ff/dTa5d6ff"Tb4b4b4)Tb4b4b4:
Te6edf3osTff7b72.Td2a8ffmakedirsTb4b4b4(Te6edf3BUILD_PATHTff7b72+Ta5d6ff"Ta5d6ff/dTa5d6ff"Tb4b4b4)
Te6edf3shutilTff7b72.Td2a8ffmoveTb4b4b4(Te6edf3fpathTb4b4b4, Te6edf3BUILD_PATHTff7b72+Ta5d6ff"Ta5d6ff/d/Ta5d6ff"Tb4b4b4)


Tff7b72def Td2a8ffgz_allTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72import T7ee787gzip
Tff7b72for Te6edf3rootTb4b4b4, Te6edf3dirsTb4b4b4, Te6edf3files Tff7b72in Te6edf3osTff7b72.Td2a8ffwalkTb4b4b4(Te6edf3BUILD_PATHTb4b4b4)Tb4b4b4:
Tff7b72for Te6edf3file Tff7b72in Te6edf3filesTb4b4b4:
Te6edf3fpath Tff7b72= Te6edf3rootTff7b72+Ta5d6ff"Ta5d6ff/Ta5d6ff"Tff7b72+Te6edf3file
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffGzipping Ta5d6ff"Tff7b72+Te6edf3fpathTff7b72+Ta5d6ff"Ta5d6ff...Ta5d6ff"Tb4b4b4)
Te6edf3f Tff7b72= Tffa657openTb4b4b4(Te6edf3fpathTb4b4b4, Ta5d6ff"Ta5d6ffrbTa5d6ff"Tb4b4b4)
Te6edf3g Tff7b72= Te6edf3gzipTff7b72.Td2a8ffopenTb4b4b4(Te6edf3fpathTff7b72+Ta5d6ff"Ta5d6ff.gzTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffwbTa5d6ff"Tb4b4b4)
Te6edf3gTff7b72.Td2a8ffwritelinesTb4b4b4(Te6edf3fTb4b4b4)
Te6edf3gTff7b72.Td2a8ffcloseTb4b4b4(Tb4b4b4)
Te6edf3fTff7b72.Td2a8ffcloseTb4b4b4(Tb4b4b4)
Te6edf3osTff7b72.Td2a8ffunlinkTb4b4b4(Te6edf3fpathTb4b4b4)

Tff7b72from T7ee787zipfile Tff7b72import Te6edf3ZipFile
Tff7b72for Te6edf3pkg_name Tff7b72in Te6edf3packagesTb4b4b4:
Te6edf3pkg_file Tff7b72= Te6edf3packagesTb4b4b4[Te6edf3pkg_nameTb4b4b4]
Te6edf3pkg_full_path Tff7b72= Te6edf3PACKAGES_PATHTff7b72+Ta5d6ff"Ta5d6ff/Ta5d6ff"Tff7b72+Te6edf3pkg_file
Tff7b72if Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffisfileTb4b4b4(Te6edf3pkg_full_pathTb4b4b4)Tb4b4b4:
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffIncluding Ta5d6ff"Tff7b72+Te6edf3pkg_fileTb4b4b4)
Te6edf3z Tff7b72= Te6edf3ZipFileTb4b4b4(Te6edf3BUILD_PATHTff7b72+Ta5d6ff"Ta5d6ff/pkg/Ta5d6ff"Tff7b72+Te6edf3pkg_nameTff7b72+Ta5d6ff"Ta5d6ff.zipTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffwTa5d6ff"Tb4b4b4)
Te6edf3zTff7b72.Td2a8ffwriteTb4b4b4(Te6edf3pkg_full_pathTb4b4b4, Te6edf3pkg_full_pathTb4b4b4[Tffa657lenTb4b4b4(Te6edf3PACKAGES_PATHTff7b72+Ta5d6ff"Ta5d6ff/Ta5d6ff"Tb4b4b4)Tb4b4b4:Tb4b4b4]Tb4b4b4)
Te6edf3zTff7b72.Td2a8ffcloseTb4b4b4(Tb4b4b4)
T8b949e# shutil.copy(pkg_full_path, BUILD_PATH+"/"+pkg_name)

Tff7b72elseTb4b4b4:
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffCould not find Ta5d6ff"Tff7b72+Te6edf3pkg_full_pathTb4b4b4)
Te6edf3exitTb4b4b4(T79c0ff1Tb4b4b4)

Tff7b72for Te6edf3um Tff7b72in Te6edf3url_mapsTb4b4b4:
Tff7b72with Tffa657openTb4b4b4(Te6edf3SOURCES_PATHTff7b72+Ta5d6ff"Ta5d6ff/Ta5d6ff"Tff7b72+Te6edf3umTb4b4b4[Ta5d6ff"Ta5d6fftargetTa5d6ff"Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffrbTa5d6ff"Tb4b4b4) Tff7b72as Te6edf3fTb4b4b4:
Te6edf3of Tff7b72= Te6edf3BUILD_PATHTff7b72+Te6edf3umTb4b4b4[Ta5d6ff"Ta5d6fftargetTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffreplaceTb4b4b4(Te6edf3SOURCES_PATHTb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6ff.mdTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff.htmlTa5d6ff"Tb4b4b4)
Te6edf3root_path Tff7b72= Ta5d6ff"Ta5d6ff../Ta5d6ff"
Te6edf3html Tff7b72= Te6edf3generate_htmlTb4b4b4(Te6edf3fTb4b4b4, Te6edf3root_pathTb4b4b4)
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffMap path : Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3umTb4b4b4[Ta5d6ff"Ta5d6ffpathTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4)
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffMap target : Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3umTb4b4b4[Ta5d6ff"Ta5d6fftargetTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4)
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffMapped root path: Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3root_pathTb4b4b4)Tb4b4b4)

Tff7b72if Tff7b72not Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffisdirTb4b4b4(Te6edf3BUILD_PATHTff7b72+Ta5d6ff"Ta5d6ff/Ta5d6ff"Tff7b72+Te6edf3umTb4b4b4[Ta5d6ff"Ta5d6ffpathTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4:
Te6edf3osTff7b72.Td2a8ffmakedirsTb4b4b4(Te6edf3BUILD_PATHTff7b72+Ta5d6ff"Ta5d6ff/Ta5d6ff"Tff7b72+Te6edf3umTb4b4b4[Ta5d6ff"Ta5d6ffpathTa5d6ff"Tb4b4b4]Tb4b4b4, Te6edf3exist_okTff7b72=Tff7b72TrueTb4b4b4)

Tff7b72with Tffa657openTb4b4b4(Te6edf3BUILD_PATHTff7b72+Ta5d6ff"Ta5d6ff/Ta5d6ff"Tff7b72+Te6edf3umTb4b4b4[Ta5d6ff"Ta5d6ffpathTa5d6ff"Tb4b4b4]Tff7b72+Ta5d6ff"Ta5d6ff/index.htmlTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffwbTa5d6ff"Tb4b4b4) Tff7b72as Te6edf3wfTb4b4b4:
Te6edf3wfTff7b72.Td2a8ffwriteTb4b4b4(Te6edf3htmlTff7b72.Td2a8ffencodeTb4b4b4(Te6edf3OUTPUT_ENCODINGTb4b4b4)Tb4b4b4)

Tff7b72for Te6edf3mdf Tff7b72in Te6edf3source_filesTb4b4b4:
Tff7b72with Tffa657openTb4b4b4(Te6edf3mdfTb4b4b4, Ta5d6ff"Ta5d6ffrbTa5d6ff"Tb4b4b4) Tff7b72as Te6edf3fTb4b4b4:
Te6edf3of Tff7b72= Te6edf3BUILD_PATHTff7b72+Te6edf3mdfTff7b72.Td2a8ffreplaceTb4b4b4(Te6edf3SOURCES_PATHTb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6ff.mdTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff.htmlTa5d6ff"Tb4b4b4)
Te6edf3root_path Tff7b72= Ta5d6ff"Ta5d6ff../Ta5d6ff"Tff7b72*Tb4b4b4(Tffa657lenTb4b4b4(Te6edf3ofTff7b72.Td2a8ffreplaceTb4b4b4(Te6edf3BUILD_PATHTff7b72+Ta5d6ff"Ta5d6ff/Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffsplitTb4b4b4(Ta5d6ff"Ta5d6ff/Ta5d6ff"Tb4b4b4)Tb4b4b4)Tff7b72-T79c0ff1Tb4b4b4)
Te6edf3html Tff7b72= Te6edf3generate_htmlTb4b4b4(Te6edf3fTb4b4b4, Te6edf3root_pathTb4b4b4)

Tff7b72if Tff7b72not Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffisdirTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffdirnameTb4b4b4(Te6edf3ofTb4b4b4)Tb4b4b4)Tb4b4b4:
Te6edf3osTff7b72.Td2a8ffmakedirsTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffdirnameTb4b4b4(Te6edf3ofTb4b4b4)Tb4b4b4, Te6edf3exist_okTff7b72=Tff7b72TrueTb4b4b4)

Tff7b72with Tffa657openTb4b4b4(Te6edf3ofTb4b4b4, Ta5d6ff"Ta5d6ffwbTa5d6ff"Tb4b4b4) Tff7b72as Te6edf3wfTb4b4b4:
Te6edf3wfTff7b72.Td2a8ffwriteTb4b4b4(Te6edf3htmlTff7b72.Td2a8ffencodeTb4b4b4(Te6edf3OUTPUT_ENCODINGTb4b4b4)Tb4b4b4)

Te6edf3fetch_reticulum_siteTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72not Ta5d6ff"Ta5d6ff--no-gzTa5d6ff" Tff7b72in Te6edf3sysTff7b72.Td2a8ffargvTb4b4b4:
Te6edf3gz_allTb4b4b4(Tb4b4b4)

Tff7b72if Tff7b72not Ta5d6ff"Ta5d6ff--no-remapTa5d6ff" Tff7b72in Te6edf3sysTff7b72.Td2a8ffargvTb4b4b4:
Te6edf3remap_namesTb4b4b4(Tb4b4b4)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────